#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const double eps = 1e-6;
const int N = 110;
int n;
double arr[N][N];

void out()
{
    for (int i = 0; i < n; ++i)
    {
        for (int j = 0; j <= n; ++j)
            printf("%10.2lf", arr[i][j]);
        puts("");
    }
    puts("");
}

int gauess()
{
    int col = 0, row = 0;
    for (col = 0, row = 0; col < n; ++col)
    {
        // 1. 找到每列中绝对值最大的一列
        int max_row = row;
        for (int i = row + 1; i < n; ++i)
            if (fabs(arr[i][col]) > fabs(arr[max_row][col]))
                max_row = i;
        // 如果此列的最大的数是0的话，就直接跳到下一列即可
        if (arr[max_row][col] == 0)
            continue;
        // 2. 与最上面的一行交换
        if (max_row != row)
            for (int i = col; i <= n; ++i)
                swap(arr[max_row][i], arr[row][i]);
        // 3. 将最上面一行的第一列变成1
        // 从后往前修改
        for (int i = n; i >= col; --i)
            arr[row][i] /= arr[row][col];
        // 4. 将当前列的下面的行都变成0
        for (int i = row + 1; i < n; ++i)
            if (fabs(arr[i][col]) > eps)
            {
                // cout << i << endl;
                // 只有在该行的当前列位置不等于0的时候才需要消除
                for (int j = n; j >= col; --j)
                    arr[i][j] -= arr[row][j] * arr[i][col];
            }
        ++row;
        // out();
    }
    // 判断是无穷多解还是无解
    // cout << row << endl;
    if (row < n)
    {
        for (int i = row; i < n; ++i)
            if (fabs(arr[i][n]) > eps)
                return 1;
        return 2;
    }
    // 从下往上修改数组获得答案
    for (int i = n - 1; i >= 0; --i)
        for (int j = i + 1; j < n; ++j)
            arr[i][n] -= arr[i][j] * arr[j][n];
    return 0;
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0), cout.tie(0);
    cin >> n;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j <= n; ++j)
            cin >> arr[i][j];
    int t = gauess();
    if (t == 1)
        cout << "No solution\n";
    else if (t == 2)
        cout << "Infinite group solutions\n";
    else
    {
        for (int i = 0; i < n; ++i)
            printf("%.2lf\n", arr[i][n]);
    }
    return 0;
}